10 dict begin
/three 3 def
/three load ==
currentdict /three known ==
currentdict /four  known ==
/three where pstack
end
/three where ==

clear
<< /a 1 /b 2 /c 3 >>
begin a b c end pstack
<< /a (a) >> begin
/a load ==
end

<< /a 1 >> dup /a undef /a known == clear

(---- countdictstack ----)
countdictstack ==
5 dict begin
countdictstack ==
end
countdictstack ==

(---- dictstack & cleardictstack ----) ==
clear
5 dict begin [] dictstack length == clear
5 dict begin [] dictstack length == clear
cleardictstack [] dictstack length == clear

(---- store ----) ==
<< /a 1 /b 2 /c 3 >> << /e 1 /f 2 /g 3 >> /a 0 store pop /a get ==

<< /k null >> dup == /k get ==

(---- store integers ----) ==
0 << 1 true 2 true 3 true 4 true 5 true 6 true 7 true 8 true 9 true >> {pop add} forall =

(---- using types other than name as key objects ----) ==

/d 10 dict def

d dup 3 (3) put 3 get == clear
d dup true (true) put true get == clear
d dup false (false) put false get == clear
d dup (abc) (abc) put (abc) get == clear
d dup /xyz (xyz) put (xyz) get == clear

/d0 << 3 (3) true (true) false (false) (abc) (abc) /xyz (xyz) >> def

d0 3     get == clear
d0 true  get == clear
d0 false get == clear
d0 (abc) get == clear
d0 (xyz) get == clear
